package com.timo.shopp.common.constants;

import lombok.Getter;

/**
 * @Author: Timo
 * @Date: 2019/3/23 11:48
 * @Description:  全局返回错误码
 *
 * HTTP 400 - 请求无效
 * HTTP 401.1 - 未授权：登录失败
 * HTTP 401.2 - 未授权：服务器配置问题导致登录失败
 * HTTP 401.3 - ACL 禁止访问资源
 * HTTP 401.4 - 未授权：授权被筛选器拒绝
 * HTTP 401.5 - 未授权：ISAPI 或 CGI 授权失败
 *
 * HTTP 403 - 禁止访问
 * HTTP 403 - 对 Internet 服务管理器 的访问仅限于 Localhost
 * HTTP 403.1 禁止访问：禁止可执行访问
 * HTTP 403.2 - 禁止访问：禁止读访问
 * HTTP 403.3 - 禁止访问：禁止写访问
 * HTTP 403.4 - 禁止访问：要求 SSL
 * HTTP 403.5 - 禁止访问：要求 SSL 128
 * HTTP 403.6 - 禁止访问：IP 地址被拒绝
 * HTTP 403.7 - 禁止访问：要求客户证书
 * HTTP 403.8 - 禁止访问：禁止站点访问
 * HTTP 403.9 - 禁止访问：连接的用户过多
 * HTTP 403.10 - 禁止访问：配置无效
 * HTTP 403.11 - 禁止访问：密码更改
 * HTTP 403.12 - 禁止访问：映射器拒绝访问
 * HTTP 403.13 - 禁止访问：客户证书已被吊销
 * HTTP 403.15 - 禁止访问：客户访问许可过多
 * HTTP 403.16 - 禁止访问：客户证书不可信或者无效
 * HTTP 403.17 - 禁止访问：客户证书已经到期或者尚未生效 HTTP 404.1 -
 *
 * 无法找到 Web 站点
 * HTTP 404- 无法找到文件
 * HTTP 405 - 资源被禁止
 * HTTP 406 - 无法接受
 * HTTP 407 - 要求代理身份验证
 * HTTP 410 - 永远不可用
 * HTTP 412 - 先决条件失败
 * HTTP 414 - 请求 - URI 太长
 *
 *
 * HTTP 500 - 内部服务器错误
 * HTTP 500.100 - 内部服务器错误 - ASP 错误
 * HTTP 500-11 服务器关闭
 * HTTP 500-12 应用程序重新启动
 * HTTP 500-13 - 服务器太忙
 * HTTP 500-14 - 应用程序无效
 * HTTP 500-15 - 不允许请求 global.asa
 * Error 501 - 未实现
 * HTTP 502 - 网关错误
 *
 * HTTP
 * 1xx - 信息提示
 * 这些状态代码表示临时的响应。客户端在收到常规响应之前，应准备接收一个或多个 1xx 响应。
 * 100 - 继续。
 * 101 - 切换协议。
 *
 *
 * 2xx - 成功
 * 这类状态代码表明服务器成功地接受了客户端请求。
 * 200 - 确定。客户端请求已成功。
 * 201 - 已创建。
 * 202 - 已接受。
 * 203 - 非权威性信息。
 * 204 - 无内容。
 * 205 - 重置内容。
 * 206 - 部分内容。
 *
 *
 * 3xx - 重定向
 * 客户端浏览器必须采取更多操作来实现请求。例如，浏览器可能不得不请求服务器上的不同的页面，或通过代理服务器重复该请求。
 * 302 - 对象已移动。
 * 304 - 未修改。
 * 307 - 临时重定向。
 *
 *
 * 4xx - 客户端错误
 * 发生错误，客户端似乎有问题。例如，客户端请求不存在的页面，客户端未提供有效的身份验证信息。
 * 400 - 错误的请求。
 * 401- 访问被拒绝。IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示：401.1 - 登录失败。
 * 401.2 - 服务器配置导致登录失败。
 * 401.3 - 由于 ACL 对资源的限制而未获得授权。
 * 401.4 - 筛选器授权失败。
 * 401.5 - ISAPI/CGI 应用程序授权失败。
 * 401.7 – 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
 *
 * 403 - 禁止访问：IIS 定义了许多不同的 403 错误，它们指明更为具体的错误原因：
 * 403.1 - 执行访问被禁止。
 * 403.2 - 读访问被禁止。
 * 403.3 - 写访问被禁止。
 * 403.4 - 要求 SSL。
 * 403.5 - 要求 SSL 128。
 * 403.6 - IP 地址被拒绝。
 * 403.7 - 要求客户端证书。
 * 403.8 - 站点访问被拒绝。
 * 403.9 - 用户数过多。
 * 403.10 - 配置无效。
 * 403.11 - 密码更改。
 * 403.12 - 拒绝访问映射表。
 * 403.13 - 客户端证书被吊销。
 * 403.14 - 拒绝目录列表。
 * 403.15 - 超出客户端访问许可。
 * 403.16 - 客户端证书不受信任或无效。
 * 403.17 - 客户端证书已过期或尚未生效。
 * 403.18 - 在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用。
 * 403.19 - 不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
 * 403.20 - Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
 *
 *
 * 404 - 未找到。404.0 -（无） – 没有找到文件或目录。
 * 404.1 - 无法在所请求的端口上访问 Web 站点。
 * 404.2 - Web 服务扩展锁定策略阻止本请求。
 * 404.3 - MIME 映射策略阻止本请求。
 *
 *
 * 405 - 用来访问本页面的 HTTP 谓词不被允许（方法不被允许）
 * 406 - 客户端浏览器不接受所请求页面的 MIME 类型。
 * 407 - 要求进行代理身份验证。
 * 412 - 前提条件失败。
 * 413 – 请求实体太大。
 * 414 - 请求 URI 太长。
 * 415 – 不支持的媒体类型。
 * 416 – 所请求的范围无法满足。
 * 417 – 执行失败。
 * 423 – 锁定的错误。
 *
 *
 * 5xx - 服务器错误
 * 服务器由于遇到错误而不能完成该请求。500 - 内部服务器错误。500.12 - 应用程序正忙于在 Web 服务器上重新启动。
 * 500.13 - Web 服务器太忙。
 * 500.15 - 不允许直接请求 Global.asa。
 * 500.16 – UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
 * 500.18 – URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。
 * 500.100 - 内部 ASP 错误。
 *
 * 501 - 页眉值指定了未实现的配置。
 * 502 - Web 服务器用作网关或代理服务器时收到了无效响应。502.1 - CGI 应用程序超时。
 * 502.2 - CGI 应用程序出错。application。
 * 503 - 服务不可用。这个错误代码为 IIS 6.0 所专用。
 * 504 - 网关超时。
 * 505 - HTTP 版本不受支持。
 */
@Getter
public enum ResultCode {

    /**
     * ###########################################################################
     * #                            返回状态码 定义
     * #注意事项100~500 之间的状态码不能使用
     * ###########################################################################
     */
    //############################# 4 开头的
    HTTP_400(400,"请求无效"),

    /**
     * 成功
     */
    RESULT_SUCCESS(200, "RESULT_SUCCESS", true),
    /**
     * 失败
     */
    RESULT_FAILED(0, "RESULT_FAILED", false)
    ;


    /**
     * ###########################################################################
     * #                            字段定义
     * ###########################################################################
     */
    public int code;
    public String msg;
    public Boolean isSuccess = false;

    /**
     * ###########################################################################
     * #                            构造函数
     * ###########################################################################
     */
    ResultCode(int code, String msg, Boolean isSuccess) {
        this.code = code;
        this.msg = msg;
        this.isSuccess = isSuccess;
    }

    ResultCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }




}
